package com.ashlikun.pdfview

import com.ashlikun.pdfview.scroll.ScrollHandle
import com.ashlikun.pdfview.source.DocumentSource
import com.ashlikun.pdfview.util.PdfViewUtil

/**
 * 作者　　: 李坤
 * 创建时间: 2024/7/5　14:38
 * 邮箱　　：496546144@qq.com
 *
 * 功能介绍：
 */
data class PDFViewConfig(
    //文档来源
    var docSource: DocumentSource? = null,
    //文档密码，系统API不支持
    var password: String? = null,
    //只是显示这些页面
    var userPages: IntArray? = null,
    //页面前后额外加载几个
    var pageLimit: Int = 1,
    //缓存的数量,数量改变需要重新加载
    var cacheBitmapSize: Int = PdfViewUtil.CACHE_SIZE,
    //滚动条
    var scrollHandle: ScrollHandle? = null,
    //如果应该垂直而不是水平滚动页面，则为True
    var isVertical: Boolean = true,
    //页面之间的间距，单位为px
    var spacing: Int = 0,
    // 添加动态间距，以便在屏幕上单独显示每个页面。
    var isAutoSpacing: Boolean = false,
    //一次翻页,惯性滚动，类似viewPager
    var isPageFling: Boolean = false,
    //抗锯齿和位图过滤
    var isAntialiasing: Boolean = true,
    /**
     * 如果视图应在缩放过程中渲染，则为True<br></br>
     * 不能像GestureDetector那样在较旧的API版本（<Build.VERSION_CODES.KITKAT></Build.VERSION_CODES.KITKAT>）上强制使用
     * 缩放时未检测到滚动<br></br>
     * 否则为假
     */
    var renderDuringScale: Boolean = false,
    /**
     * 如果位图应使用ARGB_8888格式并占用更多内存，则为True
     * 如果位图应使用RGB_565格式进行压缩并且占用较少内存，则为False
     * 系统库 SystemRenderer 只支持Config.ARGB_8888
     */
    var isBestQuality: Boolean = false,

    //如果应呈现批注，则为True,系统库 不支持
    var isAnnotationRendering: Boolean = false,

    //是否控制页面边缘对齐,就是当前页面在屏幕中间
    var isPageSnap: Boolean = false,

    //是否可以滑动
    var isSwipeEnabled: Boolean = true,

    //是否可以双击
    var isDoubletap: Boolean = true,

    //将页面调整到屏幕的策略
    var pageFitPolicy: FitPolicy = FitPolicy.WIDTH,

    //如果根据FitPolicy每个页面都应该单独适合，则为True，
    // 否则最大的页面适合，其他页面相对缩放
    var isFitEachPage: Boolean = false,

    //是否使用zoom 重新加载图片
    var isNeedZoomBitmap: Boolean = true,

    //回调合集
    var callbacks: Callbacks = Callbacks()
) {
}